草庐IT

c++ - std::transform 的泛化

全部标签

c++ - 在 C/C++ 中调用 MATLAB API

我刚刚从某个地方听说对于数值计算,“MATLAB确实提供了一些用户友好的API。如果您在C/C++代码中调用这些API,您可以显着加快计算速度。”但是我没有在像http://www.mathworks.com/support/tech-notes/1600/1622.html这样的MATLAB文档中找到这样的信息和http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/bp_kqh7.html.我从这些网站上了解到,MATLAB可以通过Matlab引擎在C和C++中调用,也可以通过mcc将M文件编译成库

c++ - 用于在链表中查找连接点的生产代码

我在一些采访中被问到这个问题。我被要求为O(1)空间和线性时间的生产环境编写代码以在链表(以Y的形式,双臂不一定相等)中查找连接点。我想出了这个解决方案(我以前在某处看到过):1.Measurelengthsofbothlists,letthembel1andl22.Movethepointeroflargerlistby|(l1-l2)|.3.Nowmovetogetherboththepointers,iftheypointtosamelocation,thatisthejunction.面试官:你的代码将如何处理?Case1.TheY-formatlinkedlisthasloo

c++ - 格式化 float

您好,我想格式化float,使其显示如下:小数.分数其中小数=最多11位数字和小数=最多9位数如果没有小数部分,则不应显示小数部分,小数部分中超过11位的数字将以科学形式表示。谁能帮帮我? 最佳答案 我认为没有这样的内部格式。需要自己格式化(未测试):voidfprintf_float(FILE*f,doublevalue){if(-1e110?"":"-";doubleipart,fpart;charfpartstr[16];intpos;fpart=modf(d,&ipart);snprintf(fpartstr,16,"%.9

c++ - 鼠标离开控件时的 Windows 消息?

我已经创建了一个控件,该控件的mosemove使它改变了颜色,但我想在我的鼠标移出该控件时将其更改回默认值。我原以为WM_MOUSELEAVE会这样做,但事实并非如此。谢谢 最佳答案 那将是正确的消息。你在打电话吗TrackMouseEvent? 关于c++-鼠标离开控件时的Windows消息?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2858134/

c++ - 为什么 std::tr1::shared_ptr<>.reset() 如此昂贵?

分析一些大量使用shared_ptrs的代码,我发现reset()的开销出奇地大。例如:structTest{inti;Test(){this->i=0;}Test(inti){this->i=i;}};...autot=make_shared(1);...t.reset(somePointerToATestObject);跟踪最后一行中的reset()(在VC++2010下),我发现它创建了一个新的引用计数对象。有没有更便宜的方法,重用现有的引用计数并且不打扰堆? 最佳答案 在一般情况下,您不能重用现有的引用计数,因为可能有其他s

c++ - 水平鼠标滚轮事件? (WinAPI)

一些笔记本电脑有一个触控板,可以进行水平和垂直滚动(WM_MOUSEWHEEL),一些桌面鼠标可以倾斜滚轮。如何处理触控板或鼠标滚轮的水平滚动? 最佳答案 当鼠标的水平滚轮倾斜或旋转时,WM_MOUSEHWHEEL被发送到事件窗口,对于从触控板的水平滚动控件进行水平滚动也很有用 关于c++-水平鼠标滚轮事件?(WinAPI),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3073

c++ - 如何在 C(或 C++)应用程序中接收和解码 SNMP 陷阱?

我正在尝试编写一个非常小的SNMP陷阱接收器,监听UDP端口162。陷阱来得很好,但我无法解码它们。我找到了libber,但由于某种原因它无法解码陷阱。我可能用错了。我想解码SNMP陷阱应该相当简单,而且我遗漏了一些关键的东西。是否可以将NET-SNMP用作库并从中创建一个小的陷阱接收程序?我不会感到惊讶,但找不到任何关于它的信息。也许我的google-fu很弱。 最佳答案 好吧,使用net-snmp,您通常会使用snmptrapd守护进程来调用您的外部命令/脚本。如果你不能使用这种方式,我建议你看看snmptrapd.c代码。此外

c++ - 使用 CMake 构建项目,包括使用不同构建系统的其他库

我正在开发一个开源项目,该项目使用C作为库,使用C++作为GUI,使用Cmake来管理构建。这个项目刚刚开始,只有几个文件。我可以在我的linux开发环境和Windows上成功生成makefiles,我可以使用CMake生成VisualStudio项目文件。到目前为止一切正常。随着项目的发展,我正处于需要测试框架的阶段。我对UnitTest++有很好的经验,它将在所有流行的平台上运行良好。问题是,我不知道如何将UnitTest++构建与CMake集成(它们在linux上使用makefile,而visualstudio项目文件可用于windows)。在构建代码之前,我需要构建UnitTe

c++ - 交叉编译 gcc

我正在按照说明进行操作here用于交叉编译GCC。我在Mac上。当我从gcc源文件夹运行此命令时:./configure--target=i586-elf--prefix=/usr/local/cross--disable-nls--without-headers--enable-languages=c,ada,c++,fortran,java,objc,obj-c++,treelang我收到这个错误:configure:error:GMP4.1andMPFR2.2.1ornewerversionsrequiredbyfortran.当我将命令更改为此(我无法编译GMP)时:./con

c++ - 将 lambda 转换为 std::tr1::function

使用带有tr1服务包和IntelC++编译器11.1.071[IA-32]的visualstudio2008,这与我的其他相关question我正在尝试为c++编写一个功能映射,它的工作方式有点像ruby​​版本strings=[2,4].map{|e|e.to_s}所以我在VlcFunctional命名空间中定义了以下函数templatevectormap(constContainer&container,std::tr1::functionf){vectortransformedValues(container.size());intindex=-1;BOOST_FOREACH(c